package package1;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class test {
    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();
//        test4();
//        test5();
//        test6(new Intertest() {
//            @Override
//            public void reverse() {
//
//            }
//            @Override
//            public void swap(int i, int j) {
//                System.out.println("匿名内部类的swap方法");
//            }
//        });
        test7();
    }
    //lambda表达式
    //lambda表达式可以用来简化匿名内部类的书写
    //lambda表达式的本质是一个函数式接口的实例
    //函数式接口：只有一个抽象方法的接口
    //@FunctionalInterface
    //lambda表达式是一种匿名函数，它可以被当作参数传递给方法或者存储在变量中。
    //lambda表达式的语法：(parameters) -> expression 或者 (parameters) -> { statements; }

    public static void test7(){
        Integer[] arr = {2,4,5,6,7,3,9,1,8,0};
        //函数式编程的思想

        Arrays.sort(arr,(o1,o2) -> o2 - o1);
        System.out.println(Arrays.toString(arr));
    }

    public static void test6(Intertest intertest) {
        intertest.swap(1,2);
    }
    public static void test5() {
        int[] nums = {10,9,8,7,6,5,4,3,2,1};
        Num num1 = new Num();
        Num num2 = new Num() {
            @Override
            public void print() {
                for(int i=0;i<nums.length;i++){
                    System.out.print(nums[i]+" ");
                }
                System.out.println();
            }
            @Override
            public void swap(int i, int j) {
                System.out.println("匿名内部类的swap方法");
            }
        };
        num1.swap(1,2);
        num2.swap(1,2);
        num1.print();
        num2.print();
    }
    public static void test1() {
        String name1="test,world!";
        System.out.println(name1.matches("test,world!"));
        //正则表达式
        //邮箱正则表达式
        String  regex = "[a-zA-Z0-9]+@[a-zA-Z0-9]+\\.[a-zA-Z0-9]+";
        //正则表达式测试文本
        String test="你好，我的名字是九天，我来自中国，我喜欢编程" +
                "同时我也喜欢音乐，我喜欢听周杰伦的歌曲，我喜欢看电影，我喜欢看电视剧"
                +"我的QQ邮箱是：326582369@qq.com";
        //正则表达式匹配文本
        //获得正则表达式的对象
        Pattern pattern = Pattern.compile(regex);
        //获得正则表达式的匹配器
        Matcher matcher = pattern.matcher(test);
    }
    public static void test2() {
        //JDK7以前时间的相关类
        //Date
        Date date1 = new Date();//创建一个对象，获取当前时间
        Date date2 = new Date(0L);//创建一个对象，获取当前时间
        System.out.println(date1);
        System.out.println(date1.getTime());
        System.out.println(date2);
        //SimpleDateFormat 时间的格式对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = simpleDateFormat.format(date1);
        System.out.println(format);

        System.out.println("-------------------------------");
        //Calendar
        //应用于日历的相关类，一个抽象类，不能直接创建对象，需要创建其子类
        //月份从0开始，0表示1月，11表示12月
        //星期从1开始，1表示星期日，7表示星期六
        //Calendar.getInstance() 获取一个日历对象
        //Calendar.getInstance(Locale locale) 获取一个日历对象
        //Calendar.getInstance(TimeZone zone) 获取一个日历对象
        //Calendar.getInstance(TimeZone zone, Locale aLocale) 获取一个日历对象
        Calendar calendar = Calendar.getInstance();//会根据系统的时区和语言环境获取一个日历对象
        Date T=calendar.getTime();
        System.out.println(T);

    }
    public static void test3() {
        //JDK8以后时间的相关类
        //ZoneId: 时区
        //Instant: 时间戳
        //LocalDate
        //LocalTime
        //LocalDateTime

        //DateTimeFormatter
        //Duration
        //Period
    }
    public static void test4() {
        Integer[] arr = {2,4,5,6,7,3,9,1,8,0};
        Arrays.sort(arr,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });
        System.out.println(Arrays.toString(arr));
    }
}
